// config

var app =
    angular.module('app')
        .config(
        ['$controllerProvider', '$compileProvider', '$filterProvider', '$provide',
            function ($controllerProvider, $compileProvider, $filterProvider, $provide) {

                // lazy controller, directive and service
                app.controller = $controllerProvider.register;
                app.directive = $compileProvider.directive;
                app.filter = $filterProvider.register;
                app.factory = $provide.factory;
                app.service = $provide.service;
                app.constant = $provide.constant;
                app.value = $provide.value;

            }
        ])
        .config(['$translateProvider', function ($translateProvider) {
            // Register a loader for the static files
            // So, the module will search missing translation tables under the specified urls.
            // Those urls are [prefix][langKey][suffix].
            $translateProvider.useStaticFilesLoader({
                prefix: 'l10n/',
                suffix: '.js'
            });
            // Tell the module what language to use by default
            $translateProvider.preferredLanguage('zh');
            // Tell the module to store the language in the local storage
            $translateProvider.useLocalStorage();
        }]).run(['$rootScope', '$timeout', '$modal', '$translate', '$location', '$window', '$http', '$q',
            function ($rootScope, $timeout, $modal, $translate, $location, $window, $http, $q) {
                $rootScope.editorFactory = $q.defer();
                function fetchModel(modelId) {
                    var modelUrl = KISBPM.URL.getModel(modelId);

                    $http({method: 'GET', url: modelUrl}).
                        success(function (data, status, headers, config) {
                            $rootScope.editor = new ORYX.Editor(data);
                            $rootScope.modelData = angular.fromJson(data);
                            $rootScope.editorFactory.resolve();
                        }).
                        error(function (data, status, headers, config) {
                            console.log('Error loading model with id ' + modelId + ' ' + data);
                        });
                }
                $rootScope.$on('$includeContentLoaded', function (event) {
                    fetchModel('42341');
                })
            }

        ]);